Reverse the order of ranges when printing in reverse. (#341578)
authorMatthias Clasen <mclasen@redhat.com>
Mon, 15 May 2006 18:33:41 +0000 (18:33 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Mon, 15 May 2006 18:33:41 +0000 (18:33 +0000)
2006-05-15  Matthias Clasen  <mclasen@redhat.com>

* gtk/gtkprintoperation.c: Reverse the order of
ranges when printing in reverse.  (#341578)

ChangeLog
ChangeLog.pre-2-10
gtk/gtkprintoperation.c

index 2bd7d557f599348d7b671842346bc753d87d95f0..a271664dcbe295e5c219eb95606e5ce83c374601 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-15  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkprintoperation.c: Reverse the order of
+       ranges when printing in reverse.  (#341578)
+
 2006-05-15  Alexander Larsson  <alexl@redhat.com>
        
        * gtk/gtkprintjob.[ch]:
index 2bd7d557f599348d7b671842346bc753d87d95f0..a271664dcbe295e5c219eb95606e5ce83c374601 100644 (file)
@@ -1,3 +1,8 @@
+2006-05-15  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkprintoperation.c: Reverse the order of
+       ranges when printing in reverse.  (#341578)
+
 2006-05-15  Alexander Larsson  <alexl@redhat.com>
        
        * gtk/gtkprintjob.[ch]:
index 5756f3bba7cd83d0c970bc1aec9d53dbc51301c9..be3500c73a9dd483a1edcddc1a62aa49fef4fe17 100644 (file)
@@ -1256,23 +1256,21 @@ typedef struct
 } PrintPagesData;
 
 static void
-find_range (gboolean      reverse,
-           GtkPageRange *range, 
-           gint         *start, 
-           gint         *end, 
-           gint         *inc)
+find_range (PrintPagesData *data)
 {
-  if (reverse)
+  GtkPageRange *range;
+
+  range = &data->ranges[data->range];
+
+  if (data->inc < 0)
     {
-      *start = range->end;
-      *end = range->start - 1;
-      *inc = -1;
+      data->start = range->end;
+      data->end = range->start - 1;
     }
   else
     {
-      *start = range->start;
-      *end = range->end + 1;
-      *inc = 1;
+      data->start = range->start;
+      data->end = range->end + 1;
     }
 }
 
@@ -1285,16 +1283,16 @@ increment_page_sequence (PrintPagesData *data)
     data->page += data->inc;
     if (data->page == data->end)
       {
-       data->range++;
-       if (data->range == data->num_ranges)
+       data->range += data->inc;
+       if (data->range == -1 || data->range == data->num_ranges)
          {
            data->uncollated++;
            if (data->uncollated == data->uncollated_copies)
              return FALSE;
-           data->range = 0;
+
+           data->range = data->inc < 0 ? data->num_ranges - 1 : 0;
          }
-       find_range (priv->manual_reverse, &data->ranges[data->range], 
-                   &data->start, &data->end, &data->inc);
+       find_range (data);
        data->page = data->start;
       }
   }
@@ -1444,8 +1442,18 @@ print_pages (GtkPrintOperation *op,
   data->print_context = print_context;
 
   data->uncollated = 0; 
-  data->range = 0;
-  find_range (data->op->priv->manual_reverse, &data->ranges[0], &data->start, &data->end, &data->inc);
+  if (data->op->priv->manual_reverse)
+    {
+      data->range = data->num_ranges - 1;
+      data->inc = -1;      
+    }
+  else
+    {
+      data->range = 0;
+      data->inc = 1;      
+    }
+  find_range (data);
+
   data->page = data->start - data->inc;
   data->collated = data->collated_copies - 1;